import request from '@/utils/request'
import method from '@/utils/config'

const urlPrefix = 'crm/'

// 请求路径
const contactsApi = {
  // 按条件分页查询
  listByParamsForTable: urlPrefix + 'contacts/listByParamsForTable',
  // 插入一条联系人,返回主键
  saveHasKey: urlPrefix + 'contacts/saveHasKey',
  // 根据id批量删除联系人
  deleteBatchByIds: urlPrefix + 'contacts/deleteBatchByIds',
  // 根据主键有选择性更新联系人
  updateByPrimaryKeySelective: urlPrefix + 'contacts/updateByPrimaryKeySelective',
  // 根据id查询联系人
  selectByPrimaryKey: urlPrefix + 'contacts/selectByPrimaryKey/',
  // 查询联系人下商机
  listBusiness: urlPrefix + 'contacts/listBusiness',
  // 联系人关联商机
  relateBusiness: urlPrefix + 'contacts/relateBusiness',
  // 联系人解除关联商机
  unRelateBusiness: urlPrefix + 'contacts/unRelateBusiness',
  // 修改联系人负责人
  changeOwnerUser: urlPrefix + 'contacts/changeOwnerUser',
  // 联系人标星
  star: urlPrefix + 'contacts/star'
}

/**
 * 按条件分页查询
 * @param queryParams 查询参数
 * @returns {*}
 */
export function listByParamsForTable(queryParams) {
  return request({
    url: contactsApi.listByParamsForTable,
    method: method.POST,
    data: {
      page: queryParams.page,
      limit: queryParams.limit,
      search: queryParams.search,
      type: queryParams.type
    }
  })
}

/**
 * 插入一条联系人,返回主键
 * @param data 联系人数据
 * @returns {*}
 */
export function saveHasKey(data) {
  return request({
    url: contactsApi.saveHasKey,
    method: method.POST,
    data: data
  })
}

/**
 * 根据id批量删除联系人
 * @param ids id集合
 * @returns {*}
 */
export function deleteBatchByIds(ids) {
  return request({
    url: contactsApi.deleteBatchByIds + `/${ids}`,
    method: method.DELETE
  })
}

/**
 * 根据主键有选择性更新联系人
 * @param data 联系人更新数据
 * @returns {*}
 */
export function updateByPrimaryKeySelective(data) {
  return request({
    url: contactsApi.updateByPrimaryKeySelective,
    method: method.PUT,
    data: data
  })
}

/**
 * 根据id查询联系人
 * @param id 联系人id
 * @returns {*}
 */
export function selectByPrimaryKey(id) {
  return request({
    url: contactsApi.selectByPrimaryKey,
    method: method.GET,
    params: {
      id
    }
  })
}

/**
 * 查询联系人下商机
 * @param queryParams 查询参数
 * @returns {*}
 */
export function listBusiness(queryParams) {
  return request({
    url: contactsApi.listBusiness,
    method: method.POST,
    data: {
      page: queryParams.page,
      limit: queryParams.limit,
      search: queryParams.search,
      searchId: queryParams.searchId
    }
  })
}

/**
 * 联系人关联商机
 * @param contactsId 联系人id
 * @param businessIds 关联商机id集合
 * @returns {*}
 */
export function relateBusiness(contactsId, businessIds) {
  return request({
    url: contactsApi.relateBusiness,
    method: method.PUT,
    params: {
      contactsId,
      businessIds
    }
  })
}

/**
 * 联系人解除关联商机
 * @param contactsId 联系人id
 * @param businessIds 关联商机id集合
 * @returns {*}
 */
export function unRelateBusiness(contactsId, businessIds) {
  return request({
    url: contactsApi.unRelateBusiness,
    method: method.PUT,
    params: {
      contactsId,
      businessIds
    }
  })
}

/**
 * 变更联系人负责人
 * @param data 负责人变更数据
 * @returns {*}
 */
export function changeOwnerUser(data) {
  return request({
    url: contactsApi.changeOwnerUser,
    method: method.PUT,
    data: data
  })
}

/**
 * 联系人标星
 * @param contactsId 联系人id
 * @returns {*}
 */
export function star(contactsId) {
  return request({
    url: contactsApi.star,
    method: method.GET,
    params: contactsId
  })
}
